2511. 最多可以摧毁的敌人城堡数目
2511. 最多可以摧毁的敌人城堡数目
Similar Question
Solution Tips
方案一: 模拟, 没做出来
找到一个 1 和 -1, 他们之间有着最多的 0
军队的经过的位置只能有敌人的城堡, 这样就有点像滑动窗口了
窗口一直扩大, 遇到一个 1 就得停止了, 双向都可以行走, 滑动窗口有点不太直观
其实对于每一个 1, 他能移动的范围都是可以向左右两边确定的
如何通过预处理, 快速的找到左右两边的范围呢? 其实就是向左或者向右的 1 / -1 就是停止的位置.
前缀和? 子数组和为 0 的最长?
连续子数组, 可以暴力计算, 考虑滑动窗口和前缀和, 滑动窗口双向不够直观, 那就是前缀和
target 为 0 的最长子数组和, 双向, 前后缀
var captureForts = function(forts) {
let ans = 0, pre = -1;
for (let i = 0; i < forts.length; i++) {
if (forts[i] == 1 || forts[i] == -1) {
if (pre >= 0 && forts[i] != forts[pre]) {
ans = Math.max(ans, i - pre - 1);
}
pre = i;
}
}
return ans;
};